package com.shenjialin.util;


import com.shenjialin.Game.Bullet;

import java.util.*;

/**
 * 子弹对象池类
 */
public class BulletsPool {
    public static final int DEFAULT_SIZE = 1500;
    public static final int POOL_MAXSIZE = 2000;
    // 用于保存所有子弹的容器
    private static List<Bullet> pool = new ArrayList<>();
    // 在类加载的时候 创建200个子弹对象 添加到容器中
    static {
        for (int i = 0; i < DEFAULT_SIZE; ++i) {
            pool.add(new Bullet());
        }
    }

    /**
     * 从池塘中获得子弹对象
     * @return
     */
    public static Bullet get() {
        Bullet bullet = null;
        if (pool.size() == 0) {// 对象池中没有对象可以使用
            bullet = new Bullet();
        }else{// 从对象池中获得一个子弹对象
            bullet = pool.remove(0);
        }
        return bullet;
    }

    /**
     * 子弹对象的回收 归还到对象池中
     */
    public static void theReturn(Bullet bullet) {
        // 对象池满
        if(pool.size() >= DEFAULT_SIZE){
            return;
        }
        pool.add(bullet);
    }
}
